/*
 *   Document   : Lobby
 *   Created on : 08-dic-2011, 11:40
 *   Author     : pacoFELC
 *   Description: funciones de apoyo para el Lobby
 */

package com.bitoon.basketdudes.ws;
import com.bitoon.basketdudes.jpa.Equipo;
import com.bitoon.basketdudes.jpa.EstEquipo;

import com.bitoon.basketdudes.jpa.PersistenceManager;
import java.util.List;
import org.apache.log4j.*;
import javax.servlet.http.*;
import javax.persistence.*;

public class Lobby {

    Logger                  log = Logger.getLogger(Competicion.class);
    EntityManagerFactory    emf = null;
    EntityManager           m_em  = null;

    public Lobby(  ) {
        try {
            // JPA Units
            emf = PersistenceManager.getInstance().getEntityManagerFactory("jpa_basket");
        } catch (Exception e) {
            log.error("[ERROR][constructor]: No se puedo conectar a la base de datos: " , e);
        }
    }

    /*
    public void setEntityManager ( EntityManager p_basket ) {
        try {
            // JPA Units
            m_em   = p_basket;
        } catch (Exception e) {
            log.error("[ERROR][constructor]: No se puedo conectar a la base de datos: " , e);
        }
    }
     * 
     */

    /*
    public EntityManager getEntityManager (  ) {
        try {
            if ( m_em == null) {
                emf = PersistenceManager.getInstance().getEntityManagerFactory("jpa_basket");
                m_em  =  emf.createEntityManager();
            }
        } catch (Exception e) {
            log.error("[ERROR][constructor]: No se puedo conectar a la base de datos: " , e);
        }


        return m_em;
    }
     * 
     */

    public String wsDatosEquipo( HttpServletRequest request, HttpServletResponse response ) throws Exception {
        int             equipo_id = -1;
        Query           q         = null;
        EntityManager   em        = null;
        String          retorno   = "";

        try {
            log.debug("datosEquipo Inicio" );

            if ( request.getParameter("equipo_id") == null)
                throw new ExcepcionGeneral( -2, "Undefined Parameter equipo_id"  );

            equipo_id = Integer.parseInt(request.getParameter("equipo_id"));

            em = emf.createEntityManager(); // check 07.08.2012
            q = em.createNamedQuery("Equipo.findById");
            q.setParameter("idEquipo", equipo_id);

            Equipo eq = (Equipo)q.getSingleResult();

            if ( eq == null ) {
                throw new ExcepcionGeneral( -3, "Team doesn't exist"  );
            } else {
                retorno = "0|"+ eq.getNivel() +"|" + eq.getPowerplay() + "|" + eq.getNick() + "|" + eq.getNombre() + "|";

                log.debug("datosEquipo Antes Estadisticas" );

                // Buscamos su resumen de resultados
                Query q2 = em.createNamedQuery("EstEquipo.findByEquipoId");
                q2.setParameter("equipoId", equipo_id);
                List<EstEquipo> lista_est_equipo = q2.getResultList();

                if (lista_est_equipo.isEmpty()) {
                    retorno += "0|0|";
                } else {
                    retorno += lista_est_equipo.get(0).getGanados() + "|" + lista_est_equipo.get(0).getPerdidos()+'|';
                }
                
            }
        } catch (ExcepcionGeneral x ) {
            log.debug("datosEquipo " + x.getCodigo() + " " + x.getDescripion() );
            if ( x.getCodigo()>0)
                retorno = "-";
            retorno = x.getCodigo() + "|" +x.getDescripion();
        } finally {
            try { em.close(); } catch (Exception e) { } // revisado 09/08/2012
        }
        return retorno;
    }

}
